home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / yamp16.zip / DISTTEST.CPP < prev    next >
C/C++ Source or Header  |  1993-01-11  |  7KB  |  186 lines

  1.  
  2. /*
  3. YAMP - Yet Another Matrix Program
  4. Version: 1.6
  5. Author: Mark Von Tress, Ph.D.
  6. Date: 01/11/93  
  7.  
  8. Copyright(c) Mark Von Tress 1993
  9. Portions of this code are (c) 1991 by Allen I. Holub and are used by
  10. permission
  11.  
  12. DISCLAIMER: THIS PROGRAM IS PROVIDED AS IS, WITHOUT ANY
  13. WARRANTY, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
  14. TO FITNESS FOR A PARTICULAR PURPOSE. THE AUTHOR DISCLAIMS
  15. ALL LIABILITY FOR DIRECT OR CONSEQUENTIAL DAMAGES RESULTING
  16. FROM USE OF THIS PROGRAM.
  17.  
  18. */
  19.  
  20.  
  21. #include "dist.h"
  22.  
  23. /********************************* end noncentral chi-square */
  24. void list_choice(void)
  25. {
  26.     printf("0. ) quit\n");
  27.     printf("1. ) beta( x, a, b)\n");
  28.     printf("2. ) non-central beta(x,a,b,l)\n");
  29.     printf("3. ) non-central f(f,df1,df2,l)\n");
  30.     printf("4. ) central f(f,df1,df2)\n");
  31.     printf("5. ) inverse standard normal(p)\n");
  32.     printf("6. ) standard normal(z)\n");
  33.     printf("7. ) inverse non-central f(p,df1,df2,l)\n");
  34.     printf("8. ) inverse central f(p,df1,df2)\n");
  35.     printf("9. ) non-central t(t,df,l)\n");
  36.     printf("10.) central t(t,df)\n");
  37.     printf("11.) inverse non-central t(p,df,l)\n");
  38.     printf("12.) inverse central t(p,df)\n");
  39.     printf("13.) gamma(x,a,b)\n");
  40.     printf("14.) non-central chi-square(x,df,l)\n");
  41.     printf("15.) central chi-square(x,df)\n");
  42.     printf("16.) inverse non-central chi-square(p,df,l)\n");
  43.     printf("17.) inverse central chi-square(p,df)\n");
  44. }
  45. void evaluate_probs(int choice)
  46. {
  47.     double x, a, b, p, df1, df2, df, lam, f, t;
  48.     x = a = b = p = df1 = df2 = df = lam = f = t = 0.0;
  49.     
  50.     switch (choice) {
  51.         case 0 : { exit(0);
  52.             break;
  53.         }
  54.         case 1 : { printf("\nx  : "); scanf("%lf", &x);
  55.             printf("a  : "); scanf("%lf", &a);
  56.             printf("b  : "); scanf("%lf", &b);
  57.             printf("beta dist ");
  58.             printf("p  : %5.4f\n", betai(a, b, x));
  59.             break;
  60.         }
  61.         case 2 : { printf("\nx  : "); scanf("%lf", &x);
  62.             printf("a  : "); scanf("%lf", &a);
  63.             printf("b  : "); scanf("%lf", &b);
  64.             printf("l  : "); scanf("%lf", &lam);
  65.             printf("non-central beta dist ");
  66.             printf("p  : %5.4f\n", ncbeta(x, a, b, lam));
  67.             break;
  68.         }
  69.         case 3 : { printf("\nf  : "); scanf("%lf", &f);
  70.             printf("df1: "); scanf("%lf", &df1);
  71.             printf("df2: "); scanf("%lf", &df2);
  72.             printf("l  : "); scanf("%lf", &lam);
  73.             printf("non-central f ");
  74.             printf("p  : %5.4f\n", ncf(f, df1, df2, lam));
  75.             break;
  76.         }
  77.         case 4 : { printf("\nf  : "); scanf("%lf", &f);
  78.             printf("df1: "); scanf("%lf", &df1);
  79.             printf("df2: "); scanf("%lf", &df2);
  80.             printf("central f ");
  81.             printf("p  : %5.4f\n", probf(f, df1, df2));
  82.             break;
  83.         }
  84.         case 5 : { printf("\np  : "); scanf("%lf", &p);
  85.             printf("inverse normal ");
  86.             printf("x  : %f\n", probnormi(p));
  87.             break;
  88.         }
  89.         case 6 : { printf("\nx  : "); scanf("%lf", &x);
  90.             printf("standard normal ");
  91.             printf("p  : %5.4f\n", probnorm(x));
  92.             break;
  93.         }
  94.         case 7 : { printf("\np  : "); scanf("%lf", &p);
  95.             printf("df1: "); scanf("%lf", &df1);
  96.             printf("df2: "); scanf("%lf", &df2);
  97.             printf("l  : "); scanf("%lf", &lam);
  98.             printf("inverse non-central f ");
  99.             printf("f  : %10.4f\n", ncfinv(p, df1, df2, lam));
  100.             break;
  101.         }
  102.         case 8 : { printf("\np  : "); scanf("%lf", &p);
  103.             printf("df1: "); scanf("%lf", &df1);
  104.             printf("df2: "); scanf("%lf", &df2);
  105.             printf("inverse central f ");
  106.             printf("f  : %10.4f\n", probfi(p, df1, df2));
  107.             break;
  108.         }
  109.         case 9 : { printf("\nt  : "); scanf("%lf", &t);
  110.             printf("df1: "); scanf("%lf", &df);
  111.             printf("lam: "); scanf("%lf", &lam);
  112.             printf("non-central t ");
  113.             printf("p  : %5.4f\n", nct(t, df, lam));
  114.             break;
  115.         }
  116.         case 10 : { printf("\nt  : "); scanf("%lf", &t);
  117.             printf("df1: "); scanf("%lf", &df);
  118.             printf("central t ");
  119.             printf("p  : %5.4f\n", probt(t, df));
  120.             break;
  121.         }
  122.         case 11 : { printf("\np  : "); scanf("%lf", &p);
  123.             printf("df : "); scanf("%lf", &df);
  124.             printf("lam: "); scanf("%lf", &lam);
  125.             printf("inverse non-central t ");
  126.             printf("t  : %10.4f\n", ncti(p, df, lam));
  127.             break;
  128.         }
  129.         case 12 : { printf("\np  : "); scanf("%lf", &p);
  130.             printf("df1: "); scanf("%lf", &df);
  131.             printf("inverse central t ");
  132.             printf("t  : %10.4f\n", probti(p, df));
  133.             break;
  134.         }
  135.         case 13 : { printf("\nx  : "); scanf("%lf", &x);
  136.             printf("a  : "); scanf("%lf", &a);
  137.             printf("b  : "); scanf("%lf", &b);
  138.             printf("gamma dist ");
  139.             printf("p  : %5.4f\n", gammp(x, a, b));
  140.             break;
  141.         }
  142.         case 14 : { printf("\nx  : "); scanf("%lf", &x);
  143.             printf("df : "); scanf("%lf", &df);
  144.             printf("lam: "); scanf("%lf", &lam);
  145.             printf("non-central chi-square ");
  146.             printf("p  : %5.4f\n", ncchi(x, df, lam));
  147.             break;
  148.         }
  149.         case 15 : { printf("\nx  : "); scanf("%lf", &x);
  150.             printf("df : "); scanf("%lf", &df);
  151.             printf("central chi-square ");
  152.             printf("p  : %5.4f\n", probchi(x, df));
  153.             break;
  154.         }
  155.         case 16 : { printf("\np  : "); scanf("%lf", &p);
  156.             printf("df : "); scanf("%lf", &df);
  157.             printf("lam: "); scanf("%lf", &lam);
  158.             printf("inverse non-central chi-square ");
  159.             printf("x  : %10.4f\n", ncchii(p, df, lam));
  160.             break;
  161.         }
  162.         case 17 : { printf("\np  : "); scanf("%lf", &p);
  163.             printf("df : "); scanf("%lf", &df);
  164.             printf("inverse central chi-square ");
  165.             printf("x  : %10.4f\n", probchii(p, df));
  166.             break;
  167.         }
  168.         default : printf(" try again \n");
  169.     }     /* end switch */
  170. }
  171. main()
  172. {
  173.     int choice = 1, another = 1;
  174.     while (choice) {
  175.         list_choice();
  176.         printf("enter your choice:  "); scanf("%d", &choice);
  177.         another = 1;
  178.         while (another && choice) {
  179.             printf("enter the parameters\n");
  180.             evaluate_probs(choice);
  181.             printf("another ( 0=no, 1=yes ): "); scanf("%d", &another);
  182.         }
  183.     }
  184.     exit(0);
  185. }
  186.